#ifndef _VL_C_DEP_DEF__H_
#define _VL_C_DEP_DEF__H_

#include <memory>
#include <unordered_map>

#include "support/vl_flag.h"
#include "support/vl_container.h"
#include "utils/vl_file.h"

namespace VL {

/**
 * @Author: CimZzz
 * @Date: 2022-08-22 23:47:55
 * 
 * C / C++ 依赖数据
 */
struct CDepData {
	/**
	 * @Author: CimZzz
	 * @Date: 2022-08-22 23:54:27
	 * 
	 * LDFLAGS
	 */
	VLFlag LDFLAGS;

	/**
	 * @Author: CimZzz
	 * @Date: 2022-08-22 23:54:32
	 * 
	 * 头文件文件夹
	 */
	std::shared_ptr<VLFile> includeDirPtr;

	/**
	 * @Author: CimZzz
	 * @Date: 2022-08-22 23:54:38
	 * 
	 * 库文件文件夹
	 */
	std::shared_ptr<VLFile> libDirPtr;

	/**
	 * @Author: CimZzz
	 * @Date: 2022-08-22 23:54:42
	 * 
	 * 动态库文件
	 */
	std::shared_ptr<VLFile> dynamicFilePtr;

	/**
	 * @Author: CimZzz
	 * @Date: 2022-08-22 23:54:48
	 * 
	 * 静态库文件
	 */
	std::shared_ptr<VLFile> staticFilePtr;

	/**
	 * @Author: CimZzz
	 * @Date: 2022-08-22 23:54:48
	 * 
	 * 位置无关静态库文件
	 */
	std::shared_ptr<VLFile> nopStaticFilePtr;
};

/**
 * @Author: CimZzz
 * @Date: 2022-08-22 23:45:50
 * 
 * C / C++ 依赖数据集
 */
struct CDepBundle {
	/**
	 * @Author: CimZzz
	 * @Date: 2022-08-22 23:54:55
	 * 
	 * 依赖数据表
	 */
	std::shared_ptr<std::unordered_map<std::string, std::shared_ptr<CDepData>>> depMap;
};

}

#endif // _VL_C_DEP_DEF__H_
